#include <stddef.h>
#include <stdlib.h>

/**
* Struktur fuer die Verwaltung eines Puffer
*/
struct Rb_handle_t
{
int targetThId, sourceThId;

size_t buffersize; // Groesse des Puffer+1
size_t freieplatz; // Aktuelle freieplatz in der Puffer

int rIdx,wIdx;     // Position des read- und writeindex

void *puffer; 	   // Puffer
char *control;     //Hier wird das Ende jeder Tellegramm (in Puffer) makiert 

};

/**
* Erzeugt eines FIFO Ringpuffers
*/
struct Rb_handle_t *initRb(int targetThId,int sourceThId,size_t buffersize);

/**
*Element in den Puffer schreiben
*/
int writeRb(struct Rb_handle_t *handle, int targetThId, int sourceThId,const void *item, size_t itemize);


/**
*Element aus der Puffer lesen
*/
int readRb(struct Rb_handle_t *handle, int targetThId, int sourceThId, void *item, size_t *itemize);


/**
*Ringpuffer loeschen
*/
int freeRb(struct Rb_handle_t *handle);
